Salbutamol is a short-acting beta-agonist (SABA) which acts on and relaxes the smooth muscle surrounding the bronchi of the lungs. By inhibiting smooth muscle contraction, it induces bronchodilation which relieves ,
most commonly seen in patients with asthma or COPD(1). Salbutamol is the most commonly prescribed inhaler in Scotland.
By relaxing the smooth muscle and dilating the airway, asthmatic symptoms are reduced.
The aim of this report was to investigate the changes in prescriptions of salbutamol inhalers in Scotland in the year 2024, with a focus on variations across the different seasons.
It is important to understand the trends in prescriptions across seasons and health boards as it can help to better assess asthma control in patients, as well as identifying any potential health inequalities between
Since salbutamol inhalers are most commonly prescribed to patients with asthma/COPD, we would expect to see a greater number of prescriptions in the winter months as the colder air can worsen the respiratory symptoms of these conditions, and the spread of respiratory viruses can also cause breathing problems(2).
In accordance with seasonal weather in Scotland(3), the data from the 12 months was grouped into 4 season: Spring (March - May), Summer (June - August), Autumn (September - November) and Winter (December - February). In the figures of this report, to adjust for population as a potential confounding variable, the number of prescriptions are reported per 1,000 people.
Here are the sources of the data files used in this report:
We can find the January - June 2024 prescriptions file and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/prescriptions-in-the-community/resource/f0df380b-3f9b-4536-bb87-569e189b727a
data_jan_jun_2024 <- read_csv("https://www.opendata.nhs.scot/dataset/84393984-14e9-4b0d-a797-b288db64d088/resource/f0df380b-3f9b-4536-bb87-569e189b727a/download/hb_pitc2024_01_06-1.csv") %>%
clean_names()
We can find the July - December 2024 prescriptions file and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/prescriptions-in-the-community/resource/f3b9f2e2-66c0-4310-9b8e-734781d2ed0a
data_jul_dec_2024 <- read_csv("https://www.opendata.nhs.scot/dataset/84393984-14e9-4b0d-a797-b288db64d088/resource/f3b9f2e2-66c0-4310-9b8e-734781d2ed0a/download/hb_pitc2024_07_12-1.csv") %>%
clean_names()
We can find the Health Board names dataset and its specific data dictionary here: https://www.opendata.nhs.scot/dataset/geography-codes-and-labels/resource/652ff726-e676-4a20-abda-435b98dd7bdc
HB_lookup <- read_csv("https://www.opendata.nhs.scot/dataset/9f942fdb-e59e-44f5-b534-d6e17229cc7b/resource/652ff726-e676-4a20-abda-435b98dd7bdc/download/hb14_hb19.csv") %>%
clean_names()
We can find the NHS Health Boards geographical datasets here: https://www.data.gov.uk/dataset/27d0fe5f-79bb-4116-aec9-a8e565ff756a/nhs-health-boards-scotland
NHS_healthboards <- st_read(here("data", "SG_NHS_HealthBoards_2019.shp"))
We can find the population datasets by health board here: https://statistics.ukdataservice.ac.uk/dataset/scotland-s-census-2022-uv102a-age-by-sex
population_data <- read_csv(here( "data", "UV102a_age_health_board_census.csv"), skip = 10) %>%
# Last column renamed to match column names with the prescription dataset
rename(Spare = "...6",
hb_name = "Health Board Area 2019",
hb_population = Count) %>%
# Data filtered so that we get the population of the entire health board
filter(Age == "All people" & Sex == "All people") %>%
# Only the relevant columns selected
select(hb_name, hb_population) %>%
# Health Board names changed so they match the prescription data
mutate(hb_name = paste("NHS", hb_name))
#Two data files for 2024 prescriptions combined so data for all 12 months are in one dataset
combined_data_2024 <- bind_rows(data_jan_jun_2024, data_jul_dec_2024) %>%
clean_names() %>%
full_join(HB_lookup, by = c("hbt" = "hb")) %>%
select(hb_name, hbt:paid_date_month) %>%
filter(!is.na(hb_name)) %>%
#Dataset joined with population data for calculating prescriptions per 1,000 people
full_join(population_data,
by = join_by(hb_name)) %>%
#Season column created with the four seasons
mutate(season = case_when(
paid_date_month %in% c(202403, 202404, 202405) ~ "Spring",
paid_date_month %in% c(202406, 202407, 202408) ~ "Summer",
paid_date_month %in% c(202409, 202410, 202411) ~ "Autumn",
paid_date_month %in% c(202412, 202401, 202402) ~ "Winter"
)
)
#Salbutamol and brand names for salbutamol selected in the prescriptions dataset
salbutamol_inhalers <- c("SALBUTAMOL", "AIROMIR", "ASMALAL", "SALAMOL", "SALBULIN", "VENTOLIN")
salbutamol_inhaler_data <- combined_data_2024 %>%
#Salbutamol drug selected
filter(
str_detect(bnf_item_description,
paste(salbutamol_inhalers, collapse = "|"))
) %>%
#Only inhalers selected from salbutamol data
filter(
str_detect(bnf_item_description, "HALER")
)
All of the data files were used to produce the following results consisting of a summary table, line graphs and a map.
salbutamol_inhaler_data_table <- salbutamol_inhaler_data %>%
group_by(
hb_name,
hb_population
) %>%
summarise(
quantity_per_1k = (sum(paid_quantity)/mean(hb_population))*1000
) %>%
ungroup() %>%
gt() %>%
tab_header(
title = "Prescription of Salbutamol Inhalers across NHS Health Boards"
) %>%
tab_source_note(
source_note = "Source: 2024 Prescription datasets from the NHS OpenData sources, Health Board Population data from Scotland's Census Data in UK Data Service source"
) %>%
cols_label(
hb_name = "Health Board",
hb_population = "Health Board Population",
quantity_per_1k = "Salbutamol Inhaler Prescriptions Per 1,000 people"
) %>%
fmt_number(
columns = quantity_per_1k,
decimals = 0
) %>%
opt_stylize()
salbutamol_inhaler_data_table
| Prescription of Salbutamol Inhalers across NHS Health Boards | ||
| Health Board | Health Board Population | Salbutamol Inhaler Prescriptions Per 1,000 people |
|---|---|---|
| NHS Ayrshire and Arran | 365256 | 117,095 |
| NHS Borders | 116821 | 113,141 |
| NHS Dumfries and Galloway | 145895 | 137,279 |
| NHS Fife | 371781 | 121,974 |
| NHS Forth Valley | 302784 | 111,427 |
| NHS Grampian | 581040 | 81,183 |
| NHS Greater Glasgow and Clyde | 1177213 | 120,673 |
| NHS Highland | 321321 | 99,703 |
| NHS Lanarkshire | 668027 | 123,448 |
| NHS Lothian | 904628 | 87,952 |
| NHS Orkney | 21958 | 70,143 |
| NHS Shetland | 22986 | 77,049 |
| NHS Tayside | 413992 | 111,984 |
| NHS Western Isles | 26140 | 112,417 |
| Source: 2024 Prescription datasets from the NHS OpenData sources, Health Board Population data from Scotland's Census Data in UK Data Service source | ||
This table summarises the total number of inhalers prescribed across each health board in 2024, as well as the equivalent number per 1,000 people.
#Function for making line graphs (as 2 separate line graphs are reported)
make_line_graph <- function(
df,
title,
subtitle = NULL,
facet = FALSE) {
seasonal_plot <- ggplot(
df,
aes(
x = season,
y = total_quantity_per_1k,
group = if (facet) hb_name else 1,
#Text shown when hovering over line graph (using plotly)
text = paste(
"Season: ", season, "<br>",
"Total Prescriptions per 1,000: ", scales::comma(total_quantity_per_1k, accuracy = 1)
) #Includes a comma and no decimal points in prescriptions per 1,000 people
)
) +
geom_line(color = "green", linewidth = 1) +
geom_point() +
labs(
x = "Season",
y = "Total Salbutamol Inhaler Prescriptions per 1,000 people",
title = title,
subtitle = subtitle
) +
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#Code for second line graph where plot is faceted by health board
if (facet) {
seasonal_plot <- seasonal_plot + facet_wrap(~ hb_name, ncol = 3, scales = "free")
}
return(seasonal_plot)
}
#Total population of Scotland calculated
total_population_scotland <- population_data %>%
summarise(
total_population = sum(hb_population, na.rm = TRUE)
) %>%
pull(total_population)
#Total number of prescriptions across the four seasons in Scotland
seasonal_totals <- salbutamol_inhaler_data %>%
mutate(
season = factor(season, levels = c("Spring", "Summer", "Autumn", "Winter"))
) %>%
group_by(season) %>%
summarise(
total_quantity = sum(paid_quantity, na.rm = TRUE)
)
#Total prescriptions per 1,000 people in Scotland
salbutamol_prescriptions_2024 <- seasonal_totals %>%
mutate(
total_quantity_per_1k = (total_quantity / total_population_scotland) * 1000
)
#Plot of Scotland prescription data
scotland_plot <- make_line_graph(
salbutamol_prescriptions_2024,
title = "Seasonal Salbutamol Prescriptions per 1,000 people in 2024"
)
#Plotly used to allow for data to be observed while hovering over graph
scotland_plotly <- ggplotly(
scotland_plot,
tooltip = c("text")
) %>%
config(displayModeBar = FALSE)
scotland_plotly
The above graph shows the prescriptions of salbutamol inhalers in Scotland throughout the 4 seasons (spring, summer, autumn and winter) in the year 2024.
There is a clear increase in the number of salbutamol inhaler prescriptions during the winter months compared to the other seasons. However, it would be useful to distinguish between the NHS Health Boards to determine whether this trend is seen across all regions of Scotland.
seasonal_hb_totals <- salbutamol_inhaler_data %>%
group_by(hb_name, season) %>%
summarise(
total_quantity = sum(paid_quantity, na.rm = TRUE),
population = mean(hb_population, na.rm = TRUE)
) %>%
mutate(
season = factor(season, levels = c("Spring", "Summer", "Autumn", "Winter"))
) %>%
mutate(
total_quantity_per_1k = (total_quantity / population) * 1000
)
health_board_plot <- make_line_graph(
seasonal_hb_totals,
title = "Seasonal Salbutamol Prescriptions by Health Board",
subtitle = "Prescriptions per 1,000 people",
facet = TRUE
)
health_board_plot
To further analyse the potential correlation between seasons and prescribing of salbutamol inhalers, the above graphs were produced. Each graph shows the trends in salbutamol inhaler prescriptions across the 4 seasons for each of the 14 health boards.
These graphs allow for comparisons in the seasonal trends in prescriptions between health boards. Similarly to the trend shown in Figure 1, the majority of health boards see increases in prescriptions during the winter season.
From this data we can see, similar to the previous graph showing total salbutamol prescriptions across Scotland, that the majority of health boards observe increases in prescriptions during the winter season. There are also high levels in spring for the Orkney, Shetland, Tayside and Western Isle health boards, possibly due to ongoing cold weather conditions.
Fewer accessible GP’s and Pharmacies could influence the number of prescriptions in NHS Western Isles and NHS Orkney. Worth noting is that NHS Shetland sees its lowest number of prescriptions in winter. With the available data, it is difficult to determine the cause of this observation. However, further studies could potentially investigate other influential factors to better understand this trend in NHS Shetland.
Overall, from the Scotland line graph and the Health Board Plots, there appears to be a correlation between seasons and salbutamol prescriptions, with increased prescriptions observed in winter. This aligns with our expectations as colder weather can worsen asthma symptoms, and increase the need for salbutamol inhalers.
salbutamol_inhaler_map_data <- NHS_healthboards %>%
full_join(salbutamol_inhaler_data,
by = join_by(HBCode == hbt)) %>%
filter(!is.na(HBName)) %>%
group_by(HBName, season, hb_population) %>%
summarise(
paid_quantity = sum(paid_quantity)
) %>%
mutate(
quantity_per_1k = (paid_quantity/hb_population)*1000
)
map_salbutamol_inhaler_per_1k <- salbutamol_inhaler_map_data %>%
ggplot(
aes(
fill = quantity_per_1k
)
) +
geom_sf(colour = "black", size = 0.1) +
coord_sf(lims_method = "geometry_bbox") +
scale_fill_distiller(
palette = "Greens",
direction = 1, name = "No. of Prescriptions per 1,000 people",
labels = scales::comma_format()
) +
labs(
title = "Salbutamol Inhaler Prescriptions by Health Board in 2024",
subtitle = "Prescriptions per 1,000 people") +
theme_void() +
theme(plot.title = element_text(face = "bold", size = 16), plot.subtitle = element_text(size = 8))
map_salbutamol_inhaler_per_1k
This map shows the number of prescriptions of salbutamol inhalers in each health board in 2024 (not separated by season). There appears to be more salbutamol prescriptions in health boards closer to the south.
This is surprising since residents in the colder northern regions would be expected to have more asthmatic symptoms requiring more salbutamol inhalers.
it could be that more densely populated and industrial areas trigger asthmatic symptoms more access to healthcare and gps in these areas - more efficient assessment, diagnosis and treatment
From the data presented in this report, there is a clear correlation between seasons and salbutamol inhaler prescriptions in Scotland as a whole, with increased prescriptions during the winter season. This trend was seen across the NHS health boards, with NHS Orkney and NHS Tayside showing a similar increase carrying into Spring as well. The exception to this trend was seen in NHS Shetland and NHS Western Isles, where the greatest number of prescriptions was during Spring. While it is difficult to explain why this is the case with the above data, it is possibly due to the effect of some confounding variables. For example, socioeconomic status in different regions and health boards may affect patient accessibility to prescriptions and inhalers(5). Additionally, only data for 2024 was included. These limitations would need to be investigated to arrive to a definitive conclusion regarding the cause of the seasonal variation within and between health boards.
Regarding potential next steps, it would be useful to research further into seasonal trends throughout other years, as well as other influencing factors. This report mainly focused on seasonal changes in prescriptions. To further investigate the changes across health boards, we could look at the SIMD scores to understand if the socioeconomic status influences salbutamol prescriptions.
There are no datasets for asthma or COPD prevalence in the ‘Public Health Scotland’ website (https://www.opendata.nhs.scot/). If such data were to become available, the seasonal influences in prescriptions could be further investigated for these conditions. Since salbutamol inhalers are primarily prescribed for asthma and COPD, it would be useful to investigate whether seasonal changes affect the number of prescriptions for one condition more than the other.
1.Marques L, Vale N. Salbutamol in the management of asthma: A review. International Journal of Molecular Sciences [Internet]. 2022;23(22). Available from: https://pmc.ncbi.nlm.nih.gov/articles/PMC9696300/
2.Review your asthma and your inhalers this winter! :: NHS Hampshire and Isle of Wight [Internet]. NHS Hampshire and Isle of Wight. 2023. Available from: https://www.hantsiow.icb.nhs.uk/news/review-your-asthma-and-your-inhalers-winter
3.Weather in Scotland | Scotland.org [Internet]. Scotland. Available from: https://www.scotland.org/about-scotland/weather
5.Julius E, Backer V, Charlotte Suppli Ulrik. Socioeconomic status is associated with healthcare seeking behaviour and disease burden in young adults with asthma – A nationwide cohort study. 2022 Jan 1;19:147997312211172-147997312211172.